"""
一、已知学生信息的基本结构：姓名(字符串)、数学分(整数)、语文分(整数）。从键盘输入所有学生信息，并存入二维列表list_stu中。学生人数未知。(文件名：A1.PY)
要求：
①按总分从大到小的顺序，显示所有学生的所有信息及平均分。
②显示所有学生的语文总平均分、数学总平均分。
③当输入的学生姓名为减号“-”时，输入结束。
④在输入数据的过程中，要有容错能力。即使输入的不是有效数据，也不能中断输入过程。如：在输入数学分时，输入了“@”,它不是整数，需要报错并提示重新输入数学分。

二维列表list_stu定义(此列表可扩展)：
list_stu=[ ["姓名", 0, 0] ]
"""

list_stu = []
# 录入数据
while True :
    print("输入 - 表示输入学生信息结束")
    name = input("请输入学生姓名:").strip()
    sum_score = 0
    aver_score = 0.0
    if name == "-":
        break
    # 数学分
    while True:
        math_score = input("请输入学生数学成绩:")
        try:
            math_score = int(math_score)
            break
        except:
            print("输入错误的数学成绩，要求整数!")
    # 语文成绩
    while True:
        chinese_score = input("请输入学生语文成绩:")
        try:
            chinese_score = int(chinese_score)
            break
        except:
            print("输入错误的语文成绩，要求整数!")

    sum_score = math_score + chinese_score
    aver_score = sum_score / 2
    stu = [name,math_score,chinese_score,aver_score,sum_score]
    list_stu.append(stu)

# 录入结束
print("成功录入学生信息")
# 处理数据
sum_math, sum_chinese  = 0, 0
aver_math , aver_chinese = 0.0, 0.0
# 排序输出
list_stu_sorted = sorted(list_stu,key=lambda x:x[4],reverse=True)
print("按总分从大到小的顺序，显示所有学生的所有信息及平均分:")
print("学生姓名\t 数学成绩\t 语文成绩\t\t 平均分\t")
for stu_ in list_stu_sorted:
    sum_math = sum_math + stu_[1]
    sum_chinese = sum_chinese + stu_[2]
    for j in range(len(stu_)):
        if j == 4:
            break
        print("{:<10}".format(stu_[j]),end="")
        # print(stu_[j],end="\t\t")
    print()


# ②显示所有学生的语文总平均分、数学总平均分。
aver_math = sum_math / len(list_stu)
aver_chinese = sum_chinese /len(list_stu)
print("所有学生的语文总平均分为:{:.2f}".format(aver_chinese))
print("所有学生的数学总平均分为:{:.2f}".format(aver_math))


